package cn.iocoder.yudao.module.cont.dal.mysql.base;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.cont.controller.admin.base.vo.PayInfoPageReqVO;
import cn.iocoder.yudao.module.cont.dal.dataobject.base.PayInfoDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;

/**
 * 合同收付款记录表  Mapper
 *
 * @author 测试用户
 */
@Mapper
public interface PayInfoMapper extends BaseMapperX<PayInfoDO> {

    default PageResult<PayInfoDO> selectPage(PageParam reqVO, String htid) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PayInfoDO>()
            .eq(PayInfoDO::getHtid, htid)
            .orderByDesc(PayInfoDO::getId));
    }

    default int deleteByHtid(Long htid) {
        return delete(PayInfoDO::getHtid, htid);
    }

    default PageResult<PayInfoDO> selectPageDue(PayInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PayInfoDO>()
                .eqIfPresent(PayInfoDO::getHtid, reqVO.getHtid())
                .eqIfPresent(PayInfoDO::getJdh, reqVO.getJdh())
                .eqIfPresent(PayInfoDO::getSfklx, reqVO.getSfklx())
                .eqIfPresent(PayInfoDO::getSfkfx, reqVO.getSfkfx())
                .eqIfPresent(PayInfoDO::getYsfje, reqVO.getYsfje())
                .eqIfPresent(PayInfoDO::getSjysfje, reqVO.getSjysfje())
                .eqIfPresent(PayInfoDO::getSjsfje, reqVO.getSjsfje())
                .eqIfPresent(PayInfoDO::getWsfje, reqVO.getWsfje())
                .betweenIfPresent(PayInfoDO::getYsfrq, reqVO.getYsfrq())
                .eqIfPresent(PayInfoDO::getSjysfrq, reqVO.getSjysfrq())
                .eqIfPresent(PayInfoDO::getCeyy, reqVO.getCeyy())
                .eqIfPresent(PayInfoDO::getZffs, reqVO.getZffs())
                .eqIfPresent(PayInfoDO::getDjh, reqVO.getDjh())
                .eqIfPresent(PayInfoDO::getJssj, reqVO.getJssj())
                .eqIfPresent(PayInfoDO::getJsdjh, reqVO.getJsdjh())
                .eqIfPresent(PayInfoDO::getSfkjfp, reqVO.getSfkjfp())
                .eqIfPresent(PayInfoDO::getFph, reqVO.getFph())
                .eqIfPresent(PayInfoDO::getKhfzr, reqVO.getKhfzr())
                .eqIfPresent(PayInfoDO::getFpjr, reqVO.getFpjr())
                .eqIfPresent(PayInfoDO::getJsr, reqVO.getJsr())
                .eqIfPresent(PayInfoDO::getPjysfs, reqVO.getPjysfs())
                .eqIfPresent(PayInfoDO::getPjysh, reqVO.getPjysh())
                .eqIfPresent(PayInfoDO::getBz, reqVO.getBz())
                .betweenIfPresent(PayInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PayInfoDO::getId));
    }

    @Select("SELECT SUM(IFNULL(sjsfje,0)) FROM cont_pay_info")
    BigDecimal getTotalMoney();
}